﻿using SIIE_ERP.Codigo;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIIE_ERP.BaseDatos.Inventarios.Catalogos
{
    public class dbo_Cat_Almacen
    {
        #region Propiedades

        private string _RFC;
        private string _Usuario;

        #endregion
        
        #region Constructores
        
        public dbo_Cat_Almacen(string RFC, string Usuario){

            this._RFC = RFC;
            this._Usuario = Usuario;
        }

        #endregion
        
        #region INSERT

        public Respuesta Insert_Almacen(
            string Descripcion,
            string Responsable = "",
            string Direccion = "",
            string Telefono = ""
        )
        {
            try
            {
                string Query = @"INSERT INTO dbo_Cat_Almacen
                             (
                                Id_Almacen,
                                RFC,
                                Descripcion,
                                Responsable,
                                Direccion,
                                Telefono,
                                Fecha_Alta,
                                Usuario_Alta,
                                Fecha_Mantto,
                                Usuario_Mantto
                             )
                             VALUES
                             (
                                IIF(DCount('*', 'dbo_Cat_Almacen') = 0, 1, DMax('Id_Almacen', 'dbo_Cat_Almacen') + 1),
                                '@@RFC',
                                '@@Descripcion',
                                '@@Responsable',
                                '@@Direccion',
                                '@@Telefono',
                                NOW(),
                                '@@Usuario_Alta',
                                NOW(),
                                '@@Usuario_Mantto'
                             )";

                Query = Query.Replace("@@RFC", this._RFC);
                Query = Query.Replace("@@Descripcion", Descripcion);
                Query = Query.Replace("@@Responsable", Responsable);
                Query = Query.Replace("@@Direccion", Direccion);
                Query = Query.Replace("@@Telefono", Telefono);
                Query = Query.Replace("@@Usuario_Alta", this._Usuario);
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);

                return SrvDB.ExecuteQuery_Insert(Query);
                
                
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }            
        }

        #endregion

        #region UPDATE

        public Respuesta Update_Almacen_Por_Id(
            object Id,
            string Descripcion,
            string Responsable = "",
            string Direccion = "",
            string Telefono = ""
        )
        {
            try
            {
                string Query = @"UPDATE dbo_Cat_Almacen SET
                                                                 
                                    Descripcion = '@@Descripcion',
                                    Responsable = '@@Responsable',
                                    Direccion = '@@Direccion',
                                    Telefono = '@@Telefono',
                                    Fecha_Mantto = NOW(),
                                    Usuario_Mantto = '@@Usuario_Mantto'

                                 WHERE Id_Almacen = @@Id";
                                
                Query = Query.Replace("@@Descripcion", Descripcion);
                Query = Query.Replace("@@Responsable", Responsable);
                Query = Query.Replace("@@Direccion", Direccion);
                Query = Query.Replace("@@Telefono", Telefono);
                Query = Query.Replace("@@Usuario_Mantto", this._Usuario);
                Query = Query.Replace("@@Id", ((Int32)Id).ToString());

                return SrvDB.ExecuteQuery_Update(Query);
                
                
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region DELETE

        public Respuesta Delete_Almacen_Por_Id(
            object Id
        )
        {
            try
            {
                string Query = @"DELETE FROM dbo_Cat_Almacen 
                                    WHERE Id_Almacen = @@Id";

                Query = Query.Replace("@@Id", ((Int32)Id).ToString());

                return SrvDB.ExecuteQuery_Delete(Query);
                
                
            }
            catch (Exception Ex)
            {
                return new Respuesta(2, Ex.Message);
            }
        }

        #endregion

        #region SELECT
        
        public DataTable Get_Almacen_Por_Id(object Id){
           
            string Query = "SELECT * FROM dbo_Cat_Almacen WHERE Id_Almacen = @@Id_Almacen";
            Query = Query.Replace("@@Id_Almacen", ((Int32)Id).ToString());

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Almacen_Por_Nombre(string Nombre)
        {
            string Query = "SELECT * FROM dbo_Cat_Almacen WHERE Nombre = @@Nombre AND RFC = '@@RFC'";
            Query = Query.Replace("@@Nombre", Nombre);
            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        public DataTable Get_Almacenes()
        {
            string Query = "SELECT * FROM dbo_Cat_Almacen WHERE RFC = '@@RFC'";
            Query = Query.Replace("@@RFC", this._RFC);

            return SrvDB.ExecuteQuery_Get(Query);
        }

        #endregion
    }
}
